package com.xp.dto;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * 节点定义查询参数
 * 用于节点定义的分页查询和条件筛选
 *
 * @author xp
 * @since 2024-01-01
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class NodeQueryRequest {

    /**
     * 页码（从1开始）
     */
    private Integer pageNum = 1;

    /**
     * 每页大小
     */
    private Integer pageSize = 10;

    /**
     * 节点编码（精确查询）
     */
    private String nodeCode;

    /**
     * 节点名称（模糊查询）
     */
    private String nodeName;

    /**
     * 节点类型
     */
    private String nodeType;

    /**
     * 节点分类
     */
    private String category;

    /**
     * 状态：0-禁用，1-启用，2-废弃
     */
    private Integer status;

    /**
     * 是否系统内置：0-否，1-是
     */
    private Integer isSystem;

    /**
     * 版本号
     */
    private String version;

    /**
     * 创建人ID
     */
    private Long creatorId;

    /**
     * 创建时间开始
     */
    private String createTimeStart;

    /**
     * 创建时间结束
     */
    private String createTimeEnd;

    /**
     * 排序字段
     */
    private String sortField;

    /**
     * 排序方向：asc-升序，desc-降序
     */
    private String sortOrder;

    /**
     * 是否只查询最新版本
     */
    private Boolean latestVersionOnly = false;

    /**
     * 是否包含已删除的记录
     */
    private Boolean includeDeleted = false;

    /**
     * 关键词搜索（在节点名称、描述、编码中搜索）
     */
    private String keyword;

    /**
     * 标签过滤（多个标签用逗号分隔）
     */
    private String tags;
}